package repository

import (
	"aigen-todo/internal/interfaces"
	"aigen-todo/internal/models"

	"gorm.io/gorm"
)

type TaskLogRepository struct {
	db *gorm.DB
}

// 确保 TaskLogRepository 实现了 interfaces.TaskLogRepositoryInterface 接口
var _ interfaces.TaskLogRepositoryInterface = &TaskLogRepository{}

func NewTaskLogRepository(db *gorm.DB) *TaskLogRepository {
	return &TaskLogRepository{db: db}
}

func (r *TaskLogRepository) Create(log *models.TaskLog) error {
	return r.db.Create(log).Error
}

func (r *TaskLogRepository) GetByID(id uint64) (*models.TaskLog, error) {
	var log models.TaskLog
	if err := r.db.First(&log, id).Error; err != nil {
		return nil, err
	}
	return &log, nil
}

func (r *TaskLogRepository) GetByTaskID(taskID uint64) ([]models.TaskLog, error) {
	var logs []models.TaskLog
	if err := r.db.Where("task_id = ?", taskID).Find(&logs).Error; err != nil {
		return nil, err
	}
	return logs, nil
}

func (r *TaskLogRepository) Update(log *models.TaskLog) error {
	return r.db.Save(log).Error
}

func (r *TaskLogRepository) Delete(id uint64) error {
	return r.db.Delete(&models.TaskLog{}, id).Error
}
